home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2gem106.lzh / CRYSTAL1.06 / SRC / CRYSTAL / EVNTMGR.MOD < prev    next >
Encoding:
Modula Implementation  |  1993-02-06  |  4.5 KB  |  190 lines

  1. IMPLEMENTATION MODULE EvntMgr;
  2.  
  3. (*
  4. AES Event Manager.
  5.  
  6. UK __DATE__ __TIME__
  7. *)
  8.  
  9. (*IMP_SWITCHES*)
  10.  
  11. FROM AES    IMPORT c,IntIn,IntOut,Addr,Integer,crystal;
  12. FROM RcMgr  IMPORT GRect,GPnt;
  13. FROM PORTAB IMPORT SIGNEDWORD,UNSIGNEDWORD,ANYTYPE;
  14. FROM SYSTEM IMPORT ADR;
  15. AES_SYSTEM_IMPORT
  16.  
  17. #if Seimet
  18. CONST F20 = 014000100H;
  19.       F21 = 015030500H;
  20.       F22 = 016050500H;
  21.       F23 = 017000101H;
  22.       F24 = 018020100H;
  23.       F25 = 019100701H;
  24.       F26 = 01A020100H;
  25. #endif
  26.  
  27. PROCEDURE EvntKeybd(): ScanWord;
  28. BEGIN
  29.   crystal(20,0,1,0);
  30.   RETURN IntOut[0];
  31. END EvntKeybd;
  32.  
  33. PROCEDURE EvntButton(    Clicks : UNSIGNEDWORD;
  34.                          Mask   : MouseButton;
  35.                          State1 : MouseButton;
  36.                      VAR XY     : GPnt;
  37.                      VAR State2 : MouseButton;
  38.                      VAR Special: SpecialKey): UNSIGNEDWORD;
  39. BEGIN
  40.   WITH IntIn DO
  41.     Array[0]:= Clicks;
  42.     Array[1]:= CAST(Integer,Mask);
  43.     Array[2]:= CAST(Integer,State1);
  44.   END;
  45.   crystal(21,3,5,0);
  46.   XY.GX:= IntOut[1];
  47.   XY.GY:= IntOut[2];
  48.   State2:= CAST(MouseButton,IntOut[3]);
  49.   Special:= CAST(SpecialKey,IntOut[4]);
  50.   RETURN IntOut[0];
  51. END EvntButton;
  52.  
  53. PROCEDURE EvntMouse(    Flag   : BOOLEAN;
  54.                         Rect   : GRect;
  55.                     VAR XY     : GPnt;
  56.                     VAR Button : MouseButton;
  57.                     VAR Special: SpecialKey);
  58. BEGIN
  59.   WITH IntIn DO
  60.     Array[0]:= ORD(Flag);
  61.     WITH Rect DO
  62.       Array[1]:= GX;
  63.       Array[2]:= GY;
  64.       Array[3]:= GW;
  65.       Array[4]:= GH;
  66.     END;
  67.   END;
  68.   crystal(22,5,5,0);
  69.   XY.GX:= IntOut[1];
  70.   XY.GY:= IntOut[2];
  71.   Button:= CAST(MouseButton,IntOut[3]);
  72.   Special:= CAST(SpecialKey,IntOut[4]);
  73. END EvntMouse;
  74.  
  75. PROCEDURE EvntMesag(VAR PBuffer: ARRAY OF ANYTYPE);
  76. BEGIN
  77.   Addr[0]:= ADR(PBuffer);
  78.   crystal(23,0,1,1);
  79. END EvntMesag;
  80.  
  81. PROCEDURE EvntTimer(LoCount: UNSIGNEDWORD;
  82.                     HiCount: UNSIGNEDWORD);
  83. BEGIN
  84.   WITH IntIn DO
  85.     Array[0]:= LoCount;
  86.     Array[1]:= HiCount;
  87.   END;
  88.   crystal(24,2,1,0);
  89. END EvntTimer;
  90.  
  91. PROCEDURE EvntMulti(    Flags   : Event;
  92.                         Clicks  : UNSIGNEDWORD;
  93.                         Mask    : MouseButton;
  94.                         State   : MouseButton;
  95.                         Mo1Flag : BOOLEAN;
  96.                         Mo1Rect : GRect;
  97.                         Mo2Flag : BOOLEAN;
  98.                         Mo2Rect : GRect;
  99.                     VAR Msg     : ARRAY OF ANYTYPE;
  100.                         LoCount : UNSIGNEDWORD;
  101.                         HiCount : UNSIGNEDWORD;
  102.                     VAR XY      : GPnt;
  103.                     VAR Button  : MouseButton;
  104.                     VAR Special : SpecialKey;
  105.                     VAR KeyBdRet: Key;
  106.                     VAR ButRet  : UNSIGNEDWORD): Event;
  107. BEGIN
  108.   WITH IntIn DO
  109.     Array[0]:= CAST(Integer,Flags);
  110.     Array[1]:= Clicks;
  111.     Array[2]:= CAST(Integer,Mask);
  112.     Array[3]:= CAST(Integer,State);
  113.  
  114.     Array[4]:= ORD(Mo1Flag);
  115.  
  116.     WITH Mo1Rect DO
  117.       Array[5]:= GX;
  118.       Array[6]:= GY;
  119.       Array[7]:= GW;
  120.       Array[8]:= GH;
  121.     END;
  122.  
  123.     Array[9]:= ORD(Mo2Flag);
  124.  
  125.     WITH Mo2Rect DO
  126.       Array[10]:= GX;
  127.       Array[11]:= GY;
  128.       Array[12]:= GW;
  129.       Array[13]:= GH;
  130.     END;
  131.  
  132.     Array[14]:= LoCount;
  133.     Array[15]:= HiCount;
  134.   END;
  135.   Addr[0]:= ADR(Msg);
  136.   crystal(25,16,7,1);
  137.   XY.GX:= IntOut[1];
  138.   XY.GY:= IntOut[2];
  139.   Button:= CAST(MouseButton,IntOut[3]);
  140.   Special:= CAST(SpecialKey,IntOut[4]);
  141. #if packing
  142.   KeyBdRet.ScanCode:= IntOut[5];
  143. #else
  144.   KeyBdRet:= IntOut[5];
  145. #endif
  146.   ButRet:= IntOut[6];
  147.   RETURN CAST(Event,IntOut[0]);
  148. END EvntMulti;
  149.  
  150. PROCEDURE EvntEvent(VAR PMEvent: MEvent): Event;
  151.  
  152. (* just another way of EvntMulti() which will look like X/GEM *)
  153.  
  154. BEGIN
  155.   c.PIntIn:= ADR(PMEvent);
  156.   c.PIntOut:= ADR(PMEvent.EEvent); (* new! *)
  157.   Addr[0]:= PMEvent.EMePBuf;
  158.   crystal(25,16,7,1);
  159.   c.PIntIn:= ADR(IntIn);
  160.   c.PIntOut:= ADR(IntOut); (* new *)
  161.  
  162. (*
  163.   WITH PMEvent DO
  164.     EMXY.GX:= IntOut[1];
  165.     EMXY.GY:= IntOut[2];
  166.     EMB:= CAST(MouseButton,IntOut[3]);
  167.     EKS:= CAST(SpecialKey,IntOut[4]);
  168.     EKR.ScanCode:= IntOut[5];
  169.     EBR:= IntOut[6];
  170.   END;
  171.  
  172.   RETURN CAST(Event,IntOut[0]);
  173. *)
  174.  
  175.   RETURN PMEvent.EEvent; (* new *)
  176. END EvntEvent;
  177.  
  178. PROCEDURE EvntDClick(Rate  : UNSIGNEDWORD;
  179.                      GetSet: BOOLEAN): UNSIGNEDWORD;
  180. BEGIN
  181.   WITH IntIn DO
  182.     Array[0]:= Rate;
  183.     Array[1]:= ORD(GetSet);
  184.   END;
  185.   crystal(26,2,1,0);
  186.   RETURN IntOut[0];
  187. END EvntDClick;
  188.  
  189. END EvntMgr.
  190.